package jdx_02_创建线程;


import java.util.concurrent.Executors;

public class CreateThread {

    //第一种线程的方式:继承线程类
    static class MyThread extends Thread{
        @Override
        public void run() {
            System.out.println("Hello MyThread!");
        }
    }
    //第二种创建线程的方式:实现 Runnable 接口
    static class MyRun implements Runnable{
        @Override
        public void run() {
            System.out.println("Hello MyRun!");
        }
    }



    //如果是继承的类,直接对象.start()
    public static void test_01(){
        new MyThread().start();
    }

    //如果是实现的接口,需要作为 Thread 构造参数传入.start()调用
    public static void test_02(){
        new Thread(new MyRun()).start();
    }

    //补充一下 lambda 表达式的调用形式 (第二种创建线程的方式)
    public static void test_03(){
        new Thread(()->{
            System.out.println("Hello lambda!");
        }).start();
    }

    //使用线程池启动线程
    public static void test_04(){
        Executors.newCachedThreadPool().execute(()->{
            System.out.println("newCachedThreadPool");
        });
    }

    /*
    [启动线程的三种方式]
    1.Thread
    2.Runnable
    3.Executors.newCachedThreadPool().execute( Runnable )
     */
}
